import { Vector3 } from '@babylonjs/core/Maths/math.vector';

/**
 * 模型属性键名
 */
const COMMUNITY_MODEL_PROPERTY_KEY = {
    SOVEREIGN: '主权',
    PATH: '连接',
};

/**
 * 建筑数据
 * @property {string} rawName 原始名称
 * @property {string} name 显示名称
 * @property {Vector3} location 位置
 * @property {string} sovereign 主权
 * @property {number} population 人口
 * @property {ICommunityData[]} pathTo 路径
 */
interface ICommunityData {
    rawName: string;
    name: string;
    location: Vector3;
    sovereign?: string | null;
    population?: number;
    pathTo: ICommunityData[];
}

/**
 * 城邑数据
 */
interface IVillageData extends ICommunityData { }

/**
 * 关塞数据
 */
interface IFortressData extends ICommunityData { }

/**
 * 城镇数据
 */
interface ITownData extends ICommunityData { }

/**
 * 城市数据
 */
interface ICityData extends ITownData { }

/**
 * 建筑比较函数
 * @param a 建筑a
 * @param b 建筑b
 * @returns {boolean} 是否相同
 */
const COMPARE_COMMUNITY = (a: ICommunityData, b: ICommunityData): boolean => {
    return a.rawName === b.rawName;
};


export {
    COMMUNITY_MODEL_PROPERTY_KEY,
    COMPARE_COMMUNITY,
};
export type {
    ICommunityData,
    ICityData,
    IFortressData,
    ITownData,
    IVillageData,
};